#pragma once
class IScreenManager;
class IRenderer;
class IGame
{
public:
	//Initializes game resources
	virtual bool Initialize() = 0;
	//Cleans up game resources
	virtual void Cleanup() = 0;
	//This function should be called every frame while IsGameRunning() is true
	virtual int Run() = 0;
	//Quits the game and sets the termination code to c
	virtual void Quit(int c) = 0;
	//Returns true if the game is currently running, false otherwise
	virtual bool IsGameRunning() = 0;
	//Used to get the return code of the game
	virtual int GetTerminationCode() = 0;
	//Get the rounded down frames per second
	virtual uint GetFPS() = 0;
	//Get the time it took for the last frame to update
	virtual float GetTimeDelta() = 0;

	//Returns the renderer class used to render using opengl/sdl
	virtual IRenderer *GetRenderer() = 0;
	//Returns the game's screen manager
	virtual IScreenManager *GetScreenManager() = 0;
};